package org.com.creationalPattern.singleton;

/**
 * 单例模式-懒汉式：第一次使用时实例化
 * @author Jonny
 * @version 1.0
 * @Description:
 * @date 2021/4/13 15:42
 */
public class SingletonIdler {
    private static SingletonIdler _singletonIdler=null;

    public SingletonIdler(){
    }

    /**
     * 如果getInstance()方法未被同步，并且线程A和线程B同时调用此方法，
     * 则执行if (_instance == null)语句时都为真，
     * 那么线程A和线程B都会创建一个对象，在内存中就会出现两个对象，
     * 这样就违反了单例模式；但使用synchronized关键字进行同步后，
     * 则不会出现此种情况
     * @return
     */
    synchronized static SingletonIdler getInstance(){
        if(_singletonIdler==null){
            _singletonIdler=new SingletonIdler();
        }
        return _singletonIdler;
    }
}
